package com.microcdyUser.service.impl;
import com.microcdyUser.dao.SysUserMapper;
import com.microcdy.sys.pojo.SysUser;
import com.microcdyUser.service.SysUserService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import tk.mybatis.mapper.entity.Example;
import java.util.List;
/****
 * @Author:cdy
 * @Description:SysUser业务层接口实现类
 * @Date 2019/6/14 0:16
 *****/
@Service
public class SysUserServiceImpl implements SysUserService {

    @Autowired
    private SysUserMapper sysUserMapper;


    /**
     * SysUser条件+分页查询
     * @param sysUser 查询条件
     * @param page 页码
     * @param size 页大小
     * @return 分页结果
     */
    @Override
    public PageInfo<SysUser> findPage(SysUser sysUser, int page, int size){
        //分页
        PageHelper.startPage(page,size);
        //搜索条件构建
        Example example = createExample(sysUser);
        //执行搜索
        return new PageInfo<SysUser>(sysUserMapper.selectByExample(example));
    }

    /**
     * SysUser分页查询
     * @param page
     * @param size
     * @return
     */
    @Override
    public PageInfo<SysUser> findPage(int page, int size){
        //静态分页
        PageHelper.startPage(page,size);
        //分页查询
        return new PageInfo<SysUser>(sysUserMapper.selectAll());
    }

    /**
     * SysUser条件查询
     * @param sysUser
     * @return
     */
    @Override
    public List<SysUser> findList(SysUser sysUser){
        //构建查询条件
        Example example = createExample(sysUser);
        //根据构建的条件查询数据
        return sysUserMapper.selectByExample(example);
    }


    /**
     * SysUser构建查询对象
     * @param sysUser
     * @return
     */
    public Example createExample(SysUser sysUser){
        Example example=new Example(SysUser.class);
        Example.Criteria criteria = example.createCriteria();
        if(sysUser!=null){
            // 用户ID
            if(!StringUtils.isEmpty(sysUser.getUserId())){
                    criteria.andEqualTo("userId",sysUser.getUserId());
            }
            // 部门ID
            if(!StringUtils.isEmpty(sysUser.getDeptId())){
                    criteria.andEqualTo("deptId",sysUser.getDeptId());
            }
            // 登录账号
            if(!StringUtils.isEmpty(sysUser.getLoginName())){
                    criteria.andEqualTo("loginName",sysUser.getLoginName());
            }
            // 用户昵称
            if(!StringUtils.isEmpty(sysUser.getUserName())){
                    criteria.andEqualTo("userName",sysUser.getUserName());
            }
            // 用户类型（00系统用户 01注册用户）
            if(!StringUtils.isEmpty(sysUser.getUserType())){
                    criteria.andEqualTo("userType",sysUser.getUserType());
            }
            // 用户邮箱
            if(!StringUtils.isEmpty(sysUser.getEmail())){
                    criteria.andEqualTo("email",sysUser.getEmail());
            }
            // 手机号码
            if(!StringUtils.isEmpty(sysUser.getPhonenumber())){
                    criteria.andEqualTo("phonenumber",sysUser.getPhonenumber());
            }
            // 用户性别（0男 1女 2未知）
            if(!StringUtils.isEmpty(sysUser.getSex())){
                    criteria.andEqualTo("sex",sysUser.getSex());
            }
            // 头像路径
            if(!StringUtils.isEmpty(sysUser.getAvatar())){
                    criteria.andEqualTo("avatar",sysUser.getAvatar());
            }
            // 密码
            if(!StringUtils.isEmpty(sysUser.getPassword())){
                    criteria.andEqualTo("password",sysUser.getPassword());
            }
            // 盐加密
            if(!StringUtils.isEmpty(sysUser.getSalt())){
                    criteria.andEqualTo("salt",sysUser.getSalt());
            }
            // 帐号状态（0正常 1停用）
            if(!StringUtils.isEmpty(sysUser.getStatus())){
                    criteria.andEqualTo("status",sysUser.getStatus());
            }
            // 删除标志（0代表存在 2代表删除）
            if(!StringUtils.isEmpty(sysUser.getDelFlag())){
                    criteria.andEqualTo("delFlag",sysUser.getDelFlag());
            }
            // 最后登陆IP
            if(!StringUtils.isEmpty(sysUser.getLoginIp())){
                    criteria.andEqualTo("loginIp",sysUser.getLoginIp());
            }
            // 最后登陆时间
            if(!StringUtils.isEmpty(sysUser.getLoginDate())){
                    criteria.andEqualTo("loginDate",sysUser.getLoginDate());
            }
            // 创建者
            if(!StringUtils.isEmpty(sysUser.getCreateBy())){
                    criteria.andEqualTo("createBy",sysUser.getCreateBy());
            }
            // 创建时间
            if(!StringUtils.isEmpty(sysUser.getCreateTime())){
                    criteria.andEqualTo("createTime",sysUser.getCreateTime());
            }
            // 更新者
            if(!StringUtils.isEmpty(sysUser.getUpdateBy())){
                    criteria.andEqualTo("updateBy",sysUser.getUpdateBy());
            }
            // 更新时间
            if(!StringUtils.isEmpty(sysUser.getUpdateTime())){
                    criteria.andEqualTo("updateTime",sysUser.getUpdateTime());
            }
            // 备注
            if(!StringUtils.isEmpty(sysUser.getRemark())){
                    criteria.andEqualTo("remark",sysUser.getRemark());
            }
        }
        return example;
    }

    /**
     * 删除
     * @param id
     */
    @Override
    public void delete(Long id){
        sysUserMapper.deleteByPrimaryKey(id);
    }

    /**
     * 修改SysUser
     * @param sysUser
     */
    @Override
    public void update(SysUser sysUser){
        sysUserMapper.updateByPrimaryKey(sysUser);
    }

    /**
     * 增加SysUser
     * @param sysUser
     */
    @Override
    public void add(SysUser sysUser){
        sysUserMapper.insert(sysUser);
    }

    /**
     * 根据ID查询SysUser
     * @param id
     * @return
     */
    @Override
    public SysUser findById(Long id){
        return  sysUserMapper.selectByPrimaryKey(id);
    }

    /**
     * 查询SysUser全部数据
     * @return
     */
    @Override
    public List<SysUser> findAll() {
        return sysUserMapper.selectAll();
    }
}
